/*
 * Copyright 2000-2020 ALPHA LAB.Inc All Rights Reserved.
 */
package com.alphalab.framework.context;

import java.io.Serializable;
import java.util.List; 
import com.alphalab.framework.domain.IValueObject;
import com.alphalab.framework.domain.ItemCondition;
import com.alphalab.framework.domain.dto.ListResultVO;
import com.alphalab.framework.domain.dto.SingleResultVO;  

/**
 * 定义GeneralQueryContext的基本方法.
 * @param <VO>
 * @author allen
 * @version 1.0.0 2017年8月16日
 */
public interface IGeneralQueryContext<VO extends IValueObject> extends IContext  {

	/**
	 * 根据主键返回对象.
	 * @param id 主键
	 * @return VO
	 */
	SingleResultVO<VO> find(Serializable id);
	
	/**
	 * 根据查询条件返回分页结果集.
	 * @param itemConditions 查询条件，为空则表示无条件
	 * @param pageIndex 第几页，从1开始
	 * @param pageSize 每页的记录总数
	 * @param orderBy 排序字段，为空表示默认排序
	 * @param isDesc 是否降序，为true表示降序
	 * @return List<VO>
	 */
	ListResultVO<VO> findListByPageWithCondition(List<ItemCondition> itemConditions, int pageIndex, 
			int pageSize, String orderBy, boolean isDesc);	
	
	/**
	 * 根据查询条件返回全部结果集.
	 * @param itemConditions 查询条件，为空则表示无条件
	 * @param orderBy 排序字段，为空表示默认排序
	 * @param isDesc 是否降序，为true表示降序
	 * @return List<VO>
	 */
	ListResultVO<VO> findListWithCondition(List<ItemCondition> itemConditions, String orderBy, 
			boolean isDesc);		
	
}
